/* 
 * File:   pic18f2xk22systemconfig.h
 * Author: apleilx
 *
 * Created on 2013年3月25日, 下午2:47
 */

#define ENICSP

#ifndef PIC18F2XK22SYSTEMCONFIG_H
#define	PIC18F2XK22SYSTEMCONFIG_H

#ifdef	__cplusplus
extern "C" {
#endif

/*
 System  config
 */
/************************************CONFIG1H***************************/
/************************************CLOCK******************************/
#pragma config  IESO =  1
#ifdef __IESO__
#warning "redefine __IESO__"
#undef __IESO__
#endif
#define __IESO__        1
/*
bit 7 IESO(1):内部 / 外部振荡器切换位
1 = 使能振荡器切换模式
0 = 禁止振荡器切换模式
 */


#pragma config  FCMEN =  1
#ifdef __FCMEN__
#warning "redefine __FCMEN__"
#undef __FCMEN__
#endif
#define __FCMEN__        1
/*
bit 6 FCMEN(1):故障保护时钟监视器使能位
1 = 使能故障保护时钟监视器
0 = 禁止故障保护时钟监视器
 */


#pragma config  PRICLKEN =  1
#ifdef __PRICLKEN__
#warning "redefine __PRICLKEN__"
#undef __PRICLKEN__
#endif
#define __PRICLKEN__        1
/*
bit 5 PRICLKEN:主时钟使能位
1 = 总是使能主时钟
0 = 可以用软件禁止主时钟
 * */


#pragma config  PLLCFG =  0
#ifdef __PLLCFG__
#warning "redefine __PLLCFG__"
#undef __PLLCFG__
#endif
#define __PLLCFG__        0
/*当主时钟FOSC选择内部时钟时，该位无效
bit 4 PLLCFG:4 x PLL 使能位
1 = 总是使能 4 x PLL,振荡器进行 4 倍频
0 = 4 x PLL 由软件通过 PLLEN (OSCTUNE<6>)控制
 */


#pragma config  FOSC =  0x08
#ifdef __FOSC__
#warning "redefine __FOSC__"
#undef __FOSC__
#endif
#define __FOSC__ (0x08)
/*
bit 3-0 FOSC<3:0>:振荡器选择位
1111 = 外部 RC 振荡器, RA6 用作 CLKOUT 引脚
1110 = 外部 RC 振荡器, RA6 用作 CLKOUT 引脚
1101 = EC 振荡器 (低功耗, <500 kHz)
1100 = EC 振荡器, OSC2 用作 CLKOUT 引脚 (低功耗, <500 kHz)
1011 = EC 振荡器 (中等功耗, 500 kHz-16 MHz)
1010 = EC 振荡器, OSC2 用作 CLKOUT 引脚 (中等功耗, 500 kHz-16 MHz)
1001 = 内部振荡器模块, OSC2 用作 CLKOUT 引脚
1000 = 内部振荡器模块
0111 = 外部 RC 振荡器
0110 = 外部 RC 振荡器, OSC2 用作 CLKOUT 引脚
0101 = EC 振荡器 (高功耗, >16 MHz)
0100 = EC 振荡器, OSC2 用作 CLKOUT 引脚 (高功耗, >16 MHz)
0011 = HS 振荡器 (中等功耗, 4 MHz-16 MHz)
0010 = HS 振荡器 (高功耗, >16 MHz)
0001 = XT 振荡器
0000 = LP 振荡器
注
1: 如果 FOSC<3:0> 配置为 HS、 XT 或 LP 振荡器且 FCMEN 位置 1,
   则还应将 IESO 位置 1,以防止虚假的时钟故障指示,以及允许时钟在发生
   OST 超时时从内部振荡器模块自动切换到外部振荡器。
*/
/************************************CONFIG2L***************************/
/************************************restconfig******************************/
/*
bit 7-5 未实现:读为 0
 */


#pragma config  BORV =  0
#ifdef __BORV__
#warning "redefine __BORV__"
#undef __BORV__
#endif
#define __BORV__ (0)
/*
bit 4-3 BORV<1:0>:欠压复位电压位 (1)
11 = VBOR 设置为 1.9V 标称值
10 = VBOR 设置为 2.2V 标称值
01 = VBOR 设置为 2.5V 标称值
00 = VBOR 设置为 2.85V 标称值
 */


#pragma config  BOREN =  1
#ifdef __BOREN__
#warning "redefine __BOREN__"
#undef __BOREN__
#endif
#define __BOREN__ (1)
/*
bit 2-1 BOREN<1:0>:欠压复位使能位 (2)
11 = 只能由硬件使能欠压复位 (禁止 SBOREN)
10 = 只能由硬件使能欠压复位,休眠模式下被禁止 (禁止 SBOREN)
01 = 由软件使能和控制欠压复位 (使能 SBOREN)
00 = 用硬件和软件禁止欠压复位
 */


#pragma config  PWRTEN =  0
#ifdef __PWRTEN__
#warning "redefine __PWRTEN__"
#undef __PWRTEN__
#endif
#define __PWRTEN__ (0x0)
/*
bit 0 PWRTEN:上电延时定时器使能位 (2)
1 = 禁止 PWRT
0 = 使能 PWRT
 */


/************************************CONFIG2H***************************/
/************************************WDT******************************/
/*
bit 7-6 未实现:读为 0
 * */
#pragma config  WDTPS =  0x05
#ifdef __WDTPS__
#warning "redefine __WDTPS__"
#undef __WDTPS__
#endif
#define __WDTPS__ (0x05)
/*
bit 5-2 WDTPS<3:0>:看门狗定时器后分频比选择位
                      1111 = 1:32,768
                      1110 = 1:16,384
                      1101 = 1:8,192
                      1100 = 1:4,096
                      1011 = 1:2,048
                      1010 = 1:1,024
                      1001 = 1:512
                      1000 = 1:256
                      0111 = 1:128
                      0110 = 1:64
                      0101 = 1:32
                      0100 = 1:16
                      0011 = 1:8
                      0010 = 1:4
                      0001 = 1:2
                      0000 = 1:1
 * */


#pragma config  WDTEN =  0x02
#ifdef __WDTEN__
#warning "redefine __WDTEN__"
#undef __WDTEN__
#endif
#define __WDTEN__ (0x02)
/*
bit 1-0 WDTEN<1:0>:看门狗定时器使能位
11 = 在硬件中使能 WDT ;禁止 SWDTEN 位
10 = WDT 由 SWDTEN 位控制
01 = 在器件处于活动状态时使能 WDT,在器件处于休眠模式时禁止;禁止 SWDTEN 位
00 = 在硬件中禁止 WDT ;禁止 SWDTEN 位
 */
/************************************CONFIG3H***************************/
/************************************PINCONFIG******************************/
#pragma config  MCLRE =  1
#ifdef __MCLRE__
#warning "redefine __MCLRE__"
#undef __MCLRE__
#endif
#define __MCLRE__ (1)
/*
bit 7 MCLRE:MCLR 引脚使能位
1 = 使能 MCLR 引脚;禁止 RE3 输入引脚
0 = 使能 RE3 输入引脚;禁止 MCLR
 * */
/*
bit 6 未实现:读为 0
 */


#pragma config  P2BMX =1
/*
bit 5 P2BMX:P2B 输入多路复用位
1 = P2B 在 RB5 上 (1)
P2B 在 RD2 上 (2)
0 = P2B 在 RC0 上
 * */


#pragma config  T3CMX =  1
/*
bit 4 T3CMX:Timer3 时钟输入多路复用位
1 = T3CKI 在 RC0 上
0 = T3CKI 在 RB5 上
 * */


#pragma config  HFOFST = 1
#ifdef __HFOFST__
#warning "redefine __HFOFST__"
#undef __HFOFST__
#endif
#define __HFOFST__ (1)
/*
 * 当选择HFINTOSC做主时钟时该位有效
bit 3 HFOFST:HFINTOSC 快速起振位
1 = HFINTOSC 开始为 CPU 提供时钟而无需等待振荡器稳定下来
0 = 系统时钟关闭直到 HFINTOSC 稳定为止
 * */


#pragma config  CCP3MX =  1
/*
bit 2 CCP3MX:CCP3 多路复用位
1 = CCP3 输入 / 输出与 RB5 复用
0 = CCP3 输入 / 输出与 RC6 复用 (1)
 * CCP3 输入 / 输出与 RE0 复用 (2)
 * */


#pragma config  PBADEN = 1
/*
bit 1 PBADEN:PORTB A/D 使能位
1 = ANSELB<5:0> 复位为 1, PORTB<5:0> 引脚在复位时被配置为模拟输入
0 = ANSELB<5:0> 复位为 0, PORTB<4:0> 引脚在复位时被配置为数字 I/O
 * */


#pragma config  CCP2MX = 1
/*
bit 0 CCP2MX:CCP2 多路复用位
1 = CCP2 输入 / 输出与 RC1 复用
0 = CCP2 输入 / 输出与 RB3 复用
注
1: 仅限 PIC18(L)F2XK22 器件。
2: 仅限 PIC18(L)F4XK22 器件。
 * */
/************************************CONFIG4L***************************/
/************************************CONFIG******************************/
#ifdef ENICSP
#pragma config  DEBUG = 0
#else
#pragma config  DEBUG = 1
#endif

/*
bit 7 DEBUG:后台调试器使能位 (2)
1 = 禁止后台调试器, RB6 和 RB7 被配置为通用 I/O 引脚
0 = 使能后台调试器, RB6 和 RB7 专用于在线调试
 * */


#pragma config  LVP = 0
/*
bit 2 LVP:单电源 ICSP 使能位
1 = 使能单电源 ICSP
0 = 禁止单电源 ICSP
 * */

/****************之后的配置寄存器为代码-EEp保护配置位，使用默认值************/
#ifdef	__cplusplus
}
#endif

#endif	/* PIC18F2XK22SYSTEMCONFIG_H */

